package gebruikersinterface;

import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;

import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

import domein.DomeinController;

@SuppressWarnings("serial")
public class Rekeningenlijst extends JPanel {

	private Scherm scherm;
	
	private JList rekeningenLijst;
	private int[] rekeningenIndex, resourceIndex;
	private String[] rekeningenString;
	private int geselecteerd;

	public Rekeningenlijst(Scherm scherm){
		this.scherm = scherm;
		setLayout(new GridLayout(1,1));
		this.refresh();
	}
	public void refresh(){
		this.removeAll();
		
		String[][] rekeningenArray = DomeinController.getInstance().getRekeningenLijst();
			int n = rekeningenArray.length;
		
		rekeningenString = new String[n];
		rekeningenIndex =  new int[n];
		resourceIndex =  new int[n];
			for(int i=0;i<n;i++){
				rekeningenString[i] = rekeningenArray[i][0];
				rekeningenIndex[i] = Integer.parseInt(rekeningenArray[i][1]);
				resourceIndex[i] = Integer.parseInt(rekeningenArray[i][2]);
				try {
					if(rekeningenIndex[i] == DomeinController.getInstance().getHuidigeRekeningID()){
						this.geselecteerd = i;
					}
					if(DomeinController.getInstance().getHuidigeRekeningID() == 0){
						this.geselecteerd = -1;
					}
				} catch (IndexOutOfBoundsException e) {
				}
			}
		
		rekeningenLijst = new JList(rekeningenString);	
			rekeningenLijst.setBackground(new Color(240,240,240));
			//rekeningenLijst.setForeground(new Color(255,255,255));
			rekeningenLijst.setSelectionBackground(new Color(10,10,10));
			rekeningenLijst.setSelectionForeground(new Color(240,240,240));
			rekeningenLijst.setVisibleRowCount( 5 ); 
			rekeningenLijst.setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
			rekeningenLijst.setFixedCellHeight(30);
			rekeningenLijst.setFixedCellWidth(280);
			
	    	Font displayFont = new Font(null,Font.BOLD, 16);
	    	rekeningenLijst.setFont(displayFont);
	    JScrollPane pane = new JScrollPane(rekeningenLijst);
	    pane.setBorder(null);
		add(pane);
		
		this.rekeningenLijst.setSelectedIndex(this.geselecteerd);
		
		rekeningenLijst.addListSelectionListener(
				new ListSelectionListener() {
					public void valueChanged( ListSelectionEvent event ){
						DomeinController.getInstance().setHuidigeRekening(rekeningenIndex[rekeningenLijst.getSelectedIndex()]);
						if(resourceIndex[rekeningenLijst.getSelectedIndex()] != 0){
							DomeinController.getInstance().setHuidigeResource(resourceIndex[rekeningenLijst.getSelectedIndex()]);
						}
						else{
							if(DomeinController.getInstance().isHuidigeResourceBezet()) DomeinController.getInstance().setHuidigeResource();
						}
						scherm.refresh();
					}
				});
	}
}
